package com.gloaba.common.log.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * 接口请求日志
 */
@Data
public class ApiRequestLog implements Serializable {
    private static final long serialVersionUID = 8749740814013825186L;

    /** 日志主键 */
    private Long operId;

    /** 请求方式 */
    private String method;

    /** 请求url */
    private String url;

    /** 请求path */
    private String path;

    /** 请求的referer*/
    private String referer;

    /** 请求的host*/
    private String host;

    /** 请求的origin*/
    private String origin;

    /** 操作地址 */
    private String clientIp;

    /** 浏览器类型 */
    private String browser;

    /** 操作系统 */
    private String os;

    /** 请求参数 */
    private String params;

    /** 返回数据 */
    private String responseData;

    /** 返回数据类型 */
    private String responseContentType;

    /**
     * 持续时长，单位ms
     */
    private Long duration;


    /** 返回结果code */
    private Integer resultCode;

    /** HTTP状态码 */
    private Integer httpStatus;

    /** 错误消息 */
    private String errorMsg;

    /** 请求时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date requestTime;

    /** 请求时间戳 */
    private long requestTimeStamp;

    /** 操作人员 */
    private String userId;

    /** 应用类型：ERP、PR */
    private String appType;

    /** 客户端类型：PC、DDINGTALK */
    private String clientType;

    /** appCode */
    private String appCode;

    /** token */
    private String token;

    /** routeId */
    private String routeId;

    /** routeMatchedPath */
    private String routeMatchedPath;

    /** routeId */
    private String routeUrl;

    /** logId */
    private String logId;

    /**
     * ip路径
     */
    private String xForwardedFor;

    private Map<String,String> headers = new HashMap<>();

}
